"use strict"

;
(function($, window, document, undefined) {
	$.extend({
		/*
		 获取并渲染权限列表
		 @param selector {string} 渲染容器对象选择器字符串
		 @param data {array} 数据数组
		 * */
		getPermiss: function(selector,data) {
			createPList($(selector),cPerList(data));
			//复选框操作逻辑
			$("body").on("click", selector+" dt input:checkbox", function() {
				if(!$(this).hasClass("noChoose"))
					$(this).closest("dl").find("dd input:checkbox").prop("checked", $(this).prop("checked"));
			});
		
			
			$("body").on("click", ".permission-list2 dd input:checkbox", function() {
				var l = $(this).parent().parent().find("input:checked").length;
				var l2 = $(this).parents(selector).find(".permission-list2 dd").find("input:checked").length;
				if($(this).prop("checked")) {
					$(this).closest("dl").find("dt input:checkbox").prop("checked", true);
					$(this).parents(selector).find("dt").first().find("input:checkbox").prop("checked", true);
					
				} else {
					if(l == 0) {
						$(this).closest("dl").find("dt input:checkbox").prop("checked", false);
					}
					if(l2 == 0) {
						$(this).parents(selector).find("dt").first().find("input:checkbox").prop("checked", false);
					}
				}
			});
			
			//勾选非列表类型，同行的列表类型必定被自动勾选上
			$("body").on("click", ".permission-list2 dd input[data-type]", function() {
				//报价等级处理
				if($(this).parents("dd").prev("dt").find("input").hasClass("noChoose")) {
					$(this).parent().siblings("label").find("input").prop("checked", false);
				}
				//非报价等级处理
				else {
					if($(this).prop("checked")) {
						$(this).parent().siblings("label").find("input[data-type=list],input[data-type=query]").prop("checked", true);
					}
					if($(this).attr("data-type") == "list" || $(this).attr("data-type") == "query") {
						if(!$(this).prop("checked") && !$(this).parent().siblings("label").find("input[data-type=list],input[data-type=query]").prop("checked")) {
							$(this).parent().siblings("label").find("input").prop("checked", false);
							$(this).parents("dd").prev("dt").find("input").prop("checked", false);
						}
					}
					if($(this).attr("data-type") == "edit") {
						$(this).parent().siblings("label").find("input[data-type=show]").prop("checked", true);
					}
				}
				
			});

			//加载分类权限列表
			/*
			 * */
			function cPerList(arr) {
				var aNew = [];
				//创建外沿对象
				$.each(_.uniq(arr, "menu_name"), function(i, v) {
					aNew.push({
						"permissionsGroupName": v.menu_name,
						"childrenPermissions": []
					});
				});
				$.each(aNew, function(i, v) {
					$.each(arr, function(k, e) {
						if(v.permissionsGroupName == e.menu_name) {
							v.childrenPermissions.push(e);
						}
					});
				});
				return aNew;
			}

			//创建父权限列表
			function createPList(container, demoList) {
				$.each(demoList, function(i, v) {
					var sDt = '<dd>' +
						'<dl class="cl permission-list2 parentClear">' +
						'<dt class="lf mr-20">' +
						'<label class="firstList mg-5" style="font-weight: bold;">' +
						'<input type="checkbox" value=""  class="" style="margin: 0;">' + v.permissionsGroupName +
						'</label>' +
						'</dt>' +
						'<dd class="lf">' + createCList(v.childrenPermissions) +
						'</dd>' +
						'</dl>' +
						'</dd>';
					container.append($(sDt));

				});
			}

			//创建子权限列表
			function createCList(aData) {
				if(aData.length > 0) {
					var tem = "";
					$.each(aData, function(i, v) {
						tem += '<label class="mg-5">' +
							'<input type="checkbox" value="" data-id="' + v.id + '" data-type="' + v.type + '" style="margin: 0;" class="permissInput" disabled>' + v.name +
							'</label>';
					});
					return tem;
				}
			}
		},
		//获取权限id数组
		getAccessId:function(){
			var arr = [];
			$(".permissInput").each(function(){
				if($(this).prop("checked")) arr.push($(this).attr("data-id"));
			});
			console.log(arr);
			return arr;
		},
		/*
		 回显数据权限数据
		 @param aData {array} 要回显的权限数据
		 * */
		backShowData:function(aData){
			$(".permissInput").each(function(){
				var _this = $(this);
				$.each(aData, function(i,v) {
					if(_this.attr("data-id") == v.id){
						_this.prop("checked",true);
						_this.parents("dd").prev("dt").find(".firstList input").prop("checked",true);
					}
				});
			});
		}
	});
})(jQuery, window, document);